{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 战胜难点"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "无论学什么，都有难点。所谓的“学习曲线陡峭”，无非就是难点靠前、难点很多、难点貌似很难而已。\n",
    "\n",
    "然而，相信我，所有的难点，事实上都可以被拆解成更小的单元，而后再逐一突破的时候，就没那么难了。逐一突破全部完成之后，再拼起来重新审视的时候就会发现那所谓的难常常只不过是错觉、幻觉而已 —— 我把它称为**困难幻觉**。\n",
    "\n",
    "把一切都当作手艺看的好处之一就是心态平和，因为你知道那不靠天分和智商，它靠的就一件事儿，不混时间，刻意思考、刻意练习 —— 其实吧，老祖宗早就有总结：\n",
    "\n",
    "> 天下无难事，只怕**有心人**……\n",
    "\n",
    "大家都是人，咋可能没“心”呢？\n",
    "\n",
    "想成为有心人，其实无非就是学会拆解之后逐一突破，就这么简单。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第三部分所用的例子依然非常简单 —— 这当然是作者的刻意；但是，所涉及的话题都是被认为“很难很难”，“很不容易理解”，“初学者就没必要学那些了”之类的话题：\n",
    "\n",
    "> * 类，以及面向对象编程（Class，OOP）\n",
    "> * 迭代器、生成器、装饰器（Iterators、Generators、Decorators）\n",
    "> * 正则表达式（Regular Expressions）\n",
    "> * 巴科斯-诺尔范式（Backus Normal Form）\n",
    "\n",
    "尤其是最后一个，巴科斯-诺尔范式，几乎所有的编程入门书籍都不会提到……\n",
    "\n",
    "然而，这些内容，在我设计《自学是门手艺》内容的过程中，是被当作 `Must have`，而不是 `Should have`，当然更不是 `Could have` 或者 `Won't have` 的。\n",
    "\n",
    "它们属于 `Must have` 的原因也很简单：\n",
    "\n",
    "> 无论学什么都一样，难的部分不学会，就等于整个没学。\n",
    "\n",
    "—— 仅因为不够全面。\n",
    "\n",
    "有什么必要干前功尽弃的事情呢？要么干脆别学算了，何必把自己搞成一个半吊子？—— 可惜，这偏偏是绝大多数人的习惯，学什么都一样，容易的部分糊弄糊弄，困难的部分直接回避…… 其实，所有焦虑，都是这样在许多年前被埋下、在许多年后生根发芽，茂盛发达 —— 你想想看是不是如此？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "虽然别人认为难，你刚开始也会有这样的错觉，但，只要你开始施展“读不懂也要读完，读完之后再读很多遍”的手段，并且还“不断自己动手归纳总结整理”，你就会“发现”，其实没什么大不了的，甚至你会有错觉：\n",
    "\n",
    "> “突然”之间一切都明了了！\n",
    "\n",
    "那个“突然”，其实就是阿基米德的 [Eureka](https://en.wikipedia.org/wiki/Eureka_effect)，那个他从澡堂里冲出来大喊大叫的词汇。\n",
    "\n",
    "![](images/archimedes-eureka.png)\n",
    "\n",
    "其实吧，泡澡和冥想，还真是最容易产生 Eureka 状态的两种活动。原理在于，泡澡和打坐的时候，大脑都极其放松，乃至于原本相互之间并无联系的脑神经突出之间突然产相互关联；而那结果就是日常生活中所描述的“融会贯通”，于是，突然之间，Eureka！\n",
    "\n",
    "自学者总是感觉幸福度很高，就是这个原因。日常中因为自学，所以总是遇到更多的困难。又因为这些东西不过是手艺，没什么可能终其一生也解决不了，恰恰相反，都是假以时日必然解决的“困难”…… 于是，自学者恰恰因为遇到的“困难”多，所以才有更多遇到“Eureka”的可能性，那种幸福，还真的难以表述，即便表述清楚了，身边的人也难以理解，因为自学者就是很少很少。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对很多人来说，阅读的难点在于起初的时候它总是显得异常枯燥。\n",
    "\n",
    "刚识字、刚上学的时候，由于理解能力有限，又由于年龄的关系于是耐心有限，所以，那时需要老师耐心陪伴、悉心引导。这就好像小朋友刚出生的时候，没有牙齿，所以只能喝奶差不多…… 然而，到了一定程度之后一定要断奶，是不是？可绝大多数人的实际情况却是，小学的时候爱上了“奶嘴”（有人带着阅读），而后一生没有奶嘴就吃不下任何东西。\n",
    "\n",
    "他们必须去“上课”，需要有人给他们讲书。不仅如此，讲得“不生动”、“不幽默”还不行；就算那职业提供奶嘴的人（这是非常令人遗憾的真相：很多的时候，所谓的“老师”本质上只不过就是奶妈而已）帅气漂亮、生动幽默、尽职尽力…… 最终还是一样的结果 —— 绝大多数人依然没有完整掌握所有应该掌握的细节。\n",
    "\n",
    "开始“自学”的活动，本质上来看，和**断奶**其实是一回事儿。\n",
    "\n",
    "> * 知识就是知识，它没有任何义务去具备幽默生动的属性；\n",
    "> * 手艺就是手艺，它没有任何义务去具备有趣欢乐的属性。\n",
    "\n",
    "幽默与生动，是要自己去扮演的角色；有趣与欢乐，是要自己去挖掘的幸福 —— 它们从来都并不自动包含在知识和手艺之中。只有当它们被“有心人”掌握、被“有心人”应用、甚至被“有心人”拿去创造的时候，也只有“有心人”才能体会到那幽默与生动、那有趣与欢乐。\n",
    "\n",
    "所以，有自学能力的人，不怕枯燥 —— 因为那本来就理应是枯燥的。这就好像人生本无意义，有意义的人生都是自己活出来的一样，有意义的知识都是自己用出来的 —— 对不用它的人，用不上它的人来说，只能也只剩下无法容忍的枯燥。\n",
    "\n",
    "能够**耐心**读完那么多在别人看来“极度枯燥”的资料，是自学者的擅长。可那在别人看来“无以伦比”的耐心，究竟是哪儿来的呢？如何造就的呢？没断奶的人想象不出来。其实也很简单，首先，平静地接受了它枯燥的本质；其次，就是经过多次实践已然明白，无论多枯燥，总能读完；无论多难，多读几遍总能读懂…… 于是，到最后，**只不过是习惯了而已。**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第三部分关于编程的内容过后，还有若干关于自学的内容。\n",
    "\n",
    "在反复阅读编程部分突破难点的过程之中、过程之后，你会对那些关于自学的内容有更深更生动的认识。很多道理过去你都知道是对的，只不过因为没有遇到过生动的例子 —— 主要是没遇到过能让自己感到生动的例子 —— 于是你就一直没有重视起来，于是，就还是那句话，那一点点的差异，造成了后来那么大的差距。\n",
    "\n",
    "然而，已然知道了真相的你，以后就再也没办法蒙蔽自己了 —— 这就是收获，这就是进步。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
